package  fr.afcepf.ai91.qualimetrie.data;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import fr.afcepf.ai91.qualimetrie.entity.Adresse;
import fr.afcepf.ai91.qualimetrie.util.UtilConnexionAi91;
/**
 * Implementation des fonctions d'acces aux donnees
 * de la base 'qualimetrie' pour la table
 * 'adresse'.
 * @author Stagiaire
 *
 */
public class DaoAdresseImpl
        implements IDaoAdresse {
    /**
     * requete pour ajouter une adresse dans la BDD.
     */
    private final String reqAjout =
            "INSERT INTO adresse "
            + "(num, rue, ville, cp, pays) "
            + "VALUES (?,?,?,?,?)";
    /**
     * Indice du num pour l'ajout d'une adresse.
     */
    private final int indiceNumAdresse = 1;
    /**
     * Indice de la rue pour l'ajout d'une adresse.
     */
    private final int indiceRueAdresse = 2;
    /**
     * Indice de la ville pour l'ajout d'une adresse.
     */
    private final int indiceVilleAdresse = 3;
    /**
     * Indice du cp pour l'ajout d'une adresse.
     */
    private final int indiceCpAdresse = 4;
    /**
     * Indice du pays pour l'ajout d'une adresse.
     */
    private final int indicePaysAdresse = 5;
    @Override
    public Adresse ajouter(Adresse paramAdr) {
        Connection cnx =
                UtilConnexionAi91.getConnection();
        try {
            PreparedStatement pstmt =
                    cnx.prepareStatement(reqAjout,
                          Statement.RETURN_GENERATED_KEYS);
            pstmt.setString(indiceNumAdresse, paramAdr.getNum());
            pstmt.setString(indiceRueAdresse, paramAdr.getRue());
            pstmt.setString(indiceVilleAdresse, paramAdr.getVille());
            pstmt.setString(indiceCpAdresse, paramAdr.getCp());
            pstmt.setString(indicePaysAdresse, paramAdr.getPays());
            int nbLigne = pstmt.executeUpdate();
            if (nbLigne == 1) {
                ResultSet rs = pstmt.getGeneratedKeys();
                if (rs.next()) {
                    paramAdr.setId(rs.getInt(1));
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                cnx.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return paramAdr;
    }
}
